package pe.gob.bcrp.sgci.gestion.reportes.svc.operativos;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Vector;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import pe.gob.bcrp.sgci.gestion.reportes.svc.librosprincipales.LibMayorSvc;
import pe.gob.bcrp.sgci.gestion.reportes.util.DateUtil;
import pe.gob.bcrp.sgci.gestion.reportes.model.dao.impl.operativos.ReporteVersionSaldosPorDimensionesDAOImpl;
import pe.gob.bcrp.sgci.gestion.reportes.model.dao.impl.operativos.ReporteVersionSaldosPorDimensionesDetalleDAOImpl;
import pe.gob.bcrp.sgci.gestion.reportes.model.dao.operativos.ReporteVersionSaldosPorDimensionesDAO;
import pe.gob.bcrp.sgci.gestion.reportes.model.dao.operativos.ReporteVersionSaldosPorDimensionesDetalleDAO;
import pe.gob.bcrp.sgci.gestion.reportes.model.entity.librosprincipales.ReporteVersionLibroMayor;
import pe.gob.bcrp.sgci.gestion.reportes.model.entity.operativos.ReporteVersionFichaContable;
import pe.gob.bcrp.sgci.gestion.reportes.model.entity.operativos.ReporteVersionSaldosPorDimensiones;
import pe.gob.bcrp.sgci.gestion.reportes.model.entity.operativos.ReporteVersionSaldosPorDimensionesDetalle;

@Stateless
public class SaldosPorDimensionesSvc {
	
	@EJB
	ReporteVersionSaldosPorDimensionesDAO reporteVersionSaldosPorDimensionesDAO;
	
	@EJB
	ReporteVersionSaldosPorDimensionesDetalleDAO reporteVersionSaldosPorDimensionesDetalleDAO;
	
	/*public Vector<ReporteVersionSaldosPorDimensionesDetalle> buscarPorFechas(String desde, String hasta){
		
		String formato = DateUtil.FORMATO_FECHA_YYYY_MM_DD;
		Date desdeDate = DateUtil.stringToDate(desde, formato);
		Date hastaDate = DateUtil.stringToDate(hasta, formato);
		
		LibMayorDAO libMayorDAO = new LibMayorDAOImpl();
		Vector<LibMayor> vectorLibMayor = (Vector<LibMayor>) libMayorDAO.findByDate(desdeDate, hastaDate);
		
		return vectorLibMayor;
	}*/
	
	public Vector<ReporteVersionSaldosPorDimensionesDetalle> buscar(int codigo){
		BigDecimal cod = new BigDecimal(codigo);
		reporteVersionSaldosPorDimensionesDAO = new ReporteVersionSaldosPorDimensionesDAOImpl();
		
		ReporteVersionSaldosPorDimensiones repVerLibDia = reporteVersionSaldosPorDimensionesDAO.findById(cod);
		
		Object[] arrObject = repVerLibDia.getRepVerSaldosDimDetList().toArray();
        List list = Arrays.asList(arrObject);
        Vector vector = new Vector(list);
		
		return vector;
	}
	
	public ReporteVersionSaldosPorDimensiones buscarRepVerSaldosPorDimensiones(int codigo){
		BigDecimal cod = new BigDecimal(codigo);
		reporteVersionSaldosPorDimensionesDAO = new ReporteVersionSaldosPorDimensionesDAOImpl();
		
		ReporteVersionSaldosPorDimensiones repVerSaldosPorDimensiones = reporteVersionSaldosPorDimensionesDAO.findById(cod);
		
		return repVerSaldosPorDimensiones ;
	}
	
	public Vector<ReporteVersionSaldosPorDimensionesDetalle> buscarTodos(){
		reporteVersionSaldosPorDimensionesDetalleDAO = new ReporteVersionSaldosPorDimensionesDetalleDAOImpl();
		return (Vector<ReporteVersionSaldosPorDimensionesDetalle>) reporteVersionSaldosPorDimensionesDetalleDAO.findAll();
	}
	
	public long createNuevoReporteVersionSaldosPorDimensiones(){
		reporteVersionSaldosPorDimensionesDAO = new ReporteVersionSaldosPorDimensionesDAOImpl();
		return reporteVersionSaldosPorDimensionesDAO.createNuevoReporteVersionSaldosPorDimensiones("1", new BigDecimal("1"));
	}
	
	public static void main(String[] args) {
		SaldosPorDimensionesSvc l = new SaldosPorDimensionesSvc();
		System.out.println("->ENTRA");
		try{
			ReporteVersionSaldosPorDimensiones repVerSaldosPorDimensiones = l.buscarRepVerSaldosPorDimensiones( 1 );
			System.out.println("----------DATOS");
			System.out.println(repVerSaldosPorDimensiones.getCodSede());
			System.out.println(repVerSaldosPorDimensiones.getReporteVersion().getFecProcesoFormateada());
			System.out.println(repVerSaldosPorDimensiones.getReporteVersion().getHoraProcesoFormateada());
			System.out.println("->TERMIN O!!");
		}catch(Exception e){
			System.out.println("GG: "+ e);
		}
		System.out.println("HABLAMOS");
		
		LibMayorSvc l3 = new LibMayorSvc();
		System.out.println("->ENTRA");
		
		FichaContableSvc l2 = new FichaContableSvc();
		System.out.println("->ENTRA");

			ReporteVersionFichaContable repVerFichaContable = l2.buscarRepVerFichaContable( 6 );
			ReporteVersionLibroMayor repVerLibMayor = l3.buscarRepVerLibMayor( 1 );
			System.out.println("+++++DATOS");
			System.out.println(repVerFichaContable.getFecProceso());
			System.out.println(repVerFichaContable.getReporteVersion().getFecProceso());
			System.out.println(repVerFichaContable.getReporteVersion().getFecProcesoFormateada());
			System.out.println(repVerFichaContable.getReporteVersion().getHoraProcesoFormateada());
			System.out.println("->TERMIN O!!");

		
	
	System.out.println("----------DATOS");
	System.out.println(repVerLibMayor.getFecDesdeString());
	System.out.println(repVerLibMayor.getFecHastaString());
	System.out.println(repVerLibMayor.getReporteVersion().getFecProcesoFormateada());
	System.out.println(repVerLibMayor.getReporteVersion().getHoraProcesoFormateada());
	System.out.println("->TERMIN O!!");

	System.out.println("HABLAMOS");
	}	
}
